const { upload } = require("../../library/qiniuUploader-min");
const { initQiniu, uploadFile } = require("../../utils/ossUtil");
const { getPdfInfo, submitFiles } = require("../../api/oss")
const computedBehavior = require("miniprogram-computed").behavior;
// pages/docment_print/docment_print.js
Page({
    /**
     * 页面的初始数据
     */
    behaviors: [computedBehavior],
    data: {
        // 文档数据
        filesData: [],
        // 打印单价
        printPrice: 0.3, 
        // 指定页面渲染
        appointPage: [
          {
            url: '../../assets/image/J1LMRC0}OP$ZDOG]XW3WOHQ.png',
            page: 1
          },{
            url: '../../assets/image/J1LMRC0}OP$ZDOG]XW3WOHQ.png',
            page: 1
          },{
            url: '../../assets/image/J1LMRC0}OP$ZDOG]XW3WOHQ.png',
            page: 1
          },{
            url: '../../assets/image/J1LMRC0}OP$ZDOG]XW3WOHQ.png',
            page: 1
          },{
            url: '../../assets/image/J1LMRC0}OP$ZDOG]XW3WOHQ.png',
            page: 1
          }
        ],
        // 指定页/连续页
        controlPage: 1
    },
// 添加打印文件
    chooseFile(){
      const _this = this
      // 打印列表最多存在10份文件
        if(_this.data.filesData.length >=10){
          wx.showToast({
            title: '一次最多选择10份文件哟',
            icon: "none",
            duration: 1200
          })
          return
        }
        wx.chooseMessageFile({
            success(res){
                //调用上传接口
                console.log(res);
                res.tempFiles.forEach(item => {
                  console.log(item);
                  initQiniu()
                  uploadFile(item.path,async (val)=>{
                      console.log(val);
                      const fileUrl = {
                        fileUrl: val.fileURL
                      }
                      const {data:info} = await getPdfInfo(fileUrl)
                      console.log(info);
                      // 赋值
                      let oData = {
                        'fileName': item.name,
                        'url': info.data.url,
                        'startPrintPage': 1,
                        'endPrintPage': info.data.pageCount,
                        'pageCount': info.data.pageCount,
                        'colorFlag': 0,
                        'sideFlag': 0,
                        // 打印份数
                        'count': 1,
                        // 指定页面
                        'choosePages': '',
                         // 指定页/连续页   1/0
                        'controlPage': 0
                      }
                      _this.setData({
                        filesData: _this.data.filesData.concat(oData)
                      })
                      console.log(_this.data);
                  })
               });
             }
         })
    },
    /**
     * 文件预览
     */
    preview(data){
        console.log(data.currentTarget.dataset.url);
        wx.downloadFile({
            url: data.currentTarget.dataset.url,      //要预览的PDF的地址
            success: function (res) {                           
              console.log(res);
              if (res.statusCode === 200) {                     //成功
                var Path = res.tempFilePath                     //返回的文件临时地址，用于后面打开本地预览所用
                wx.openDocument({
                  filePath: Path,                               //要打开的文件路径
                  success: function (res) {
                    console.log('打开PDF成功');
                  }
                })
              }
            },
            fail: function (res) {
              console.log(res);                                  //失败
            }
        })
    },
    // 删除文件
    removeFile(e){
      const _this = this
      wx.showModal({
        title: '温馨提示', //提示的标题
        content: '确定删除此文件吗？', //提示的内容
        success: function(res) {
          if(res.confirm) {
            _this.data.filesData.splice(e.target.dataset.index, 1)
            _this.setData({
              filesData: _this.data.filesData
            })
          } else if (res.cancel) {
            console.log('用户点击了取消')
          }
        }
      })
      console.log(this.data.filesData);
    },
    // 打印规格
    chosePageColor(e){
      if(e.detail == "黑白"){
        this.setData({
          [`filesData[${e.currentTarget.dataset.index}].colorFlag`]: 0
        })
      }else if(e.detail == "彩印"){
        this.setData({
          [`filesData[${e.currentTarget.dataset.index}].colorFlag`]: 1
        })
      }
    },
    chosePageFace(e){
      if(e.detail == "单"){
        this.setData({
          [`filesData[${e.currentTarget.dataset.index}].sideFlag`]: 0
        })
      }else if(e.detail == "双"){
        this.setData({[`filesData[${e.currentTarget.dataset.index}].sideFlag`]: 1})
      }
    },
    chosePageNum(e){
      if(e.detail == "连续页"){
        this.setData({
          [`filesData[${e.currentTarget.dataset.index}].controlPage`]: 0
        })
      }else if(e.detail == "指定页"){
        this.setData({[`filesData[${e.currentTarget.dataset.index}].controlPage`]: 1})
      }
    },
    // 输入框
    blurInputStart(e){
      if(parseInt(e.detail.value)<1){
        console.log(this.data.filesData[e.currentTarget.dataset.index].startPrintPage,e.detail.value);
        this.setData({
          [`filesData[${e.currentTarget.dataset.index}].startPrintPage`]: 1
        })
      }else if(parseInt(e.detail.value)>this.data.filesData[e.currentTarget.dataset.index].endPrintPage){
        this.setData({
          [`filesData[${e.currentTarget.dataset.index}].startPrintPage`]: this.data.filesData[e.currentTarget.dataset.index].endPrintPage
        })
      }else {
        this.setData({
          [`filesData[${e.currentTarget.dataset.index}].startPrintPage`]: parseInt(e.detail.value)
        })
      }
    },
    // 输入框失去焦点触发
    blurInputEnd(e){
      if(e.detail.value<this.data.filesData[e.currentTarget.dataset.index].startPrintPage){
        this.setData({
          [`filesData[${e.currentTarget.dataset.index}].endPrintPage`]: this.data.filesData[e.currentTarget.dataset.index].startPrintPage})
      }else if(e.detail.value>this.data.filesData[e.currentTarget.dataset.index].pageCount){
        this.setData({
          [`filesData[${e.currentTarget.dataset.index}].endPrintPage`]: this.data.filesData[e.currentTarget.dataset.index].pageCount})
      }else {
        this.setData({
          [`filesData[${e.currentTarget.dataset.index}].endPrintPage`]:e.detail.value})
      }
    },
    // 打印份数
    pageNums(e){
      this.setData({
        [`filesData[${e.currentTarget.dataset.index}].count`]: e.detail.value
      })
      console.log(this.data);
    },
    // 指定页面
    alongPage(e){
      wx.navigateTo({
        url: '/subPage/pages/alonePage/alonePage',
        success: (res)=>{
          res.eventChannel.emit('pageData', { 
            data: this.data.appointPage, 
            index: e.currentTarget.dataset.index ,
            chooseVal: this.data.filesData[e.currentTarget.dataset.index].choosePages
          })
        }
      })
    },
    // 提交打印
    checkPrint(){
      // 判断并处理一下连续页/指定页的数据
      const printFile = []
      this.data.filesData.forEach(item=>{
        const { url, count, sideFlag, colorFlag, startPrintPage, endPrintPage, choosePages, controlPage } = item
        const fileData = {
          // 文件地址
          fileUrl: url,
          // 份数
          count,
          // 页码范围
          pages: controlPage == 0 ? (startPrintPage + '-' + endPrintPage) : choosePages,
          // 双/单面打印
          sideFlag,
          // 彩色/黑白打印
          colorFlag
        }
        printFile.push(fileData)
      })
      console.log(printFile);
      // 提交打印
        submitFiles(printFile).then((res)=>{
          if(res.data.code == 200){
            // 请求成功
            wx.showToast({
              title: '请求成功',
              duration: 1500
            })
            // ......
          }else{
            wx.showToast({
              title: '请求失败',
              icon: "error",
              duration: 1500
            })
          }
        })
    },
    // 计算属性
    computed: {
      // 总页数
      totalPages(data){
        return data.filesData.reduce((p, c)=>{
          if(c.controlPage == 0){
            // 连续页
            p += (c.endPrintPage-c.startPrintPage+1)*c.count
          }else if(c.controlPage == 1){
            // 指定页
            if(c.choosePages!=""){
              p += c.choosePages.split(",").length*c.count
            }
          }
        return p.toFixed(1)
        },0)
      },
      // 总价格
      sumPrice(data){
        return (data.totalPages*data.printPrice).toFixed(1)
      },
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
      // 渲染暂存数据
      this.setData({
        filesData: wx.getStorageSync('filesData')
      })
      console.log(this.data);
      console.log(wx.getStorageSync('filesData'));
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {
    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload(e) {
      // 页面离开缓存当前页面数据
      wx.setStorageSync('filesData', this.data.filesData)
    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})